Flow
Introducción
La funcionalidad de Tool Flow Creation Tutorial permite a los usuarios crear y gestionar herramientas personalizadas en un entorno de diseño intuitivo. Esta capacidad es valiosa para automatizar y optimizar flujos de trabajo, facilitando la gestión de procesos complejos con facilidad. Este tutorial te guiará paso a paso para crear una nueva herramienta y configurarla adecuadamente.
Primeros Pasos
Para comenzar, asegúrate de estar en la URL correcta: https://sai-library.saiapplications.com/designer. Aquí es donde podrás acceder al panel de diseño para crear y modificar tus herramientas.
Procedimiento
Paso 1: Acceder a la Opción Nueva Herramienta
- Acción: Haz clic en el botón de crear nueva herramienta.
- Elemento: Botón de crear nueva herramienta junto a "Herramientas Creadas".
- Resultado: Se abrirá un campo de entrada para el nombre de la nueva herramienta.

💡 Consejo: Asegúrate de que el panel de herramientas esté visible para facilitar el acceso.
Paso 2: Ingresar Nombre de Herramienta
- Acción: Escribe "My New Tool" en el campo de texto visible.
- Elemento: Campo de entrada de texto.
- Resultado: El nombre de la herramienta aparecerá en la lista de herramientas creadas.

⚠️ Nota: Verifica que el nombre de la herramienta no esté duplicado en la lista existente.
Paso 3: Confirmar Creación
- Acción: Haz clic en el botón de confirmar.
- Elemento: Botón de confirmar.
- Resultado: La herramienta se añadirá a la lista de herramientas creadas.

Paso 4: Seleccionar Tipo de Plantilla
- Acción: Haz clic en el elemento con clase
template-type-selecty selecciona la opción "Flow". - Elemento: Menú desplegable de tipo de plantilla.
- Resultado: El tipo de plantilla se establecerá en "Flow".

Paso 5: Añadir Descripción
- Acción: Introduce "This is a test description" en el campo de descripción.
- Elemento: Campo de texto para descripción.
- Resultado: La descripción será visible en la sección general de la herramienta.

Paso 6: Revisar Sección General
- Acción: Desplázate para revisar los campos en la sección General.
- Elemento: Sección General.
- Resultado: Campos como descripción y categoría están disponibles.

Paso 7: Configurar Sección de Entradas
- Acción: Explora las opciones disponibles para añadir entradas.
- Elemento: Botón "Nueva Entrada".
- Resultado: Se pueden añadir entradas personalizadas para la herramienta.

Paso 8: Configurar Sección de Flujo
Añade y organiza bloques de flujo para definir el comportamiento de la herramienta. Los bloques de flujo permiten crear workflows automatizados sofisticados.

Bloques de Flujo Disponibles:
If — Condicional
Ejecuta código JavaScript para decidir entre dos caminos: True o False.
- Input: Datos recibidos del bloque anterior.
- Código JS: Debe retornar
trueofalse. - True / False: Salidas que dirigen la continuidad del flujo.
Use cuando sea necesario validar valores, comparar estados o controlar bifurcaciones del flujo, como siempre se ha hecho en lógica clásica.
🔁 Iterate — Iteración de Colección
Recorre una lista (array) elemento por elemento, ejecutando los bloques conectados internamente.
- Collection: La lista a recorrer.
- Item Variable Name: Nombre de la variable que representa cada elemento de la lista.
- Item Output: Expone el elemento actual a los bloques siguientes.
Ideal para repetir acciones sobre una colección de datos.
🔧 Call Tool — Llamar Herramienta
Ejecuta una herramienta registrada en el sistema, como APIs internas, prompts o funciones personalizadas.
- Block Name: Nombre simbólico del bloque.
- Select Tool: Herramienta a ejecutar.
- Input: Datos enviados a la herramienta.
- Output: Resultado retornado por la herramienta.
Mantiene la tradición de delegar trabajo a módulos bien definidos.
✏️ Set Variable — Definir Variable
Crea o modifica una variable de flujo.
- Variable Name: Nombre de la variable.
- Variable Value: Valor asignado.
- Output: Variable resultante.
Usado para almacenar estados, resultados intermedios o preparar datos para pasos futuros.
🟨 Execute JS — Ejecutar JavaScript
Ejecuta código JavaScript arbitrario dentro del flujo.
- Input / Output: Datos de entrada y salida del comando.
- Uso: Transformaciones, cálculos y lógicas que requieren mayor flexibilidad.
Flujo de Ejecución
La secuencia en la que se ejecutan los bloques está determinada por sus puertos de entrada y salida.
Cada conexión a un puerto de entrada de un bloque puede verse como una precondición que debe satisfacerse antes de que el bloque pueda ejecutarse. En casos donde un bloque tiene múltiples conexiones de entrada, todos los bloques conectados deben ejecutarse primero antes de que el bloque actual pueda proceder.
Cualquier bloque sin una conexión de entrada será programado para ejecutarse inmediatamente cuando comience el flujo, permitiendo que múltiples bloques se ejecuten simultáneamente.
Ejemplo de orden de ejecución:
- Al iniciar el flujo, ambos bloques a y b se ejecutarán simultáneamente
- Una vez que a y b se hayan completado, c se ejecutará
- Después de la finalización de c, d se ejecutará
- Posterior a la finalización de d, ambos e y f se ejecutarán
- El flujo concluirá cuando no queden bloques por ejecutar
Condiciones
En el diseño de flujo, puede haber instancias donde sea necesario ejecutar ciertos bloques basados en condiciones. Esto puede lograrse mediante la utilización del bloque if, que permite la evaluación de una cadena como código JavaScript.
- Si el código evalúa como true, solo se ejecutan los bloques conectados al puerto True.
- Por el contrario, si la evaluación resulta en false, la ejecución se restringirá a los bloques conectados al puerto False.
Iteraciones
El bloque Iterate permite procesar cada elemento en una lista ejecutando acciones en ellos uno a la vez. Acepta entrada como una cadena separada por comas o un array JSON.
Campos:
- Collection: La lista a iterar, soportando sintaxis mustache.
- Item Variable Name: El nombre de variable asignado al elemento actual, que puede ser usado por bloques durante la iteración. Si dos bloques Iterate se ejecutan al mismo tiempo o están anidados, cada uno debe usar un nombre de variable único.
Puertos de Salida:
- Item: Conecta a bloques ejecutados para cada elemento en la colección.
- Output: Conecta a bloques ejecutados después de que se completen todas las iteraciones.
Cuando los bloques se vinculan al puerto Item, aparece un cuadro delimitador alrededor de ellos para indicar visualmente lo que se ejecutará para cada elemento.
Ejemplo Completo: Generador de Oferta Inteligente
Este ejemplo demuestra cómo crear un Generador de Oferta Inteligente usando el tipo de herramienta Flow.
Pasos:
- Crear un dossier sobre el cliente
- Identificar desafíos del dossier
- Para cada desafío, buscar casos y soluciones de Stefanini
- Producir un informe final vinculando desafíos del cliente con casos y soluciones de Stefanini
Implementación:
-
Definir Entrada: Solo se necesita el nombre del cliente como entrada.
-
Primer Bloque (getCompanyInfo): Añada un bloque Call Tool configurado como "SmartOffer-CompanyInformation." Esta herramienta Prompt usa el modelo "gpt-4o-mini-search" para recopilar información sobre el cliente y generar un dossier. Pase la entrada del cliente usando
{{ inputs.client }}. -
Segundo Bloque (getChallenges): Conecte a otro bloque Call Tool que extrae desafíos del texto del dossier y los produce como un array JSON. Pase la salida anterior usando
{{ outputs.getCompanyInfo }}. -
Bloque Iterate: Conecte a un bloque Iterate con Collection establecido en
{{ outputs.getChallenges }}e Item Variable Name como "item". -
Dentro de la Iteración (getCases y getSolutions): En el puerto item, añada herramientas Request para consultar Bases de Conocimiento para casos y soluciones, cada una recibiendo
{{ variables.item }}como entrada. -
Acumular Resultados: Use un bloque Set Variable para actualizar la variable "challenges":
{{ variables.challenges }}
# Challenge: {{ variables.item }}
## Cases
{{ outputs.getCases }}
## Solutions
{{ outputs.getSolutions }} -
Bloque Final (getOffer): Después de todas las iteraciones, llame a una herramienta Prompt que genera el informe final usando
{{ inputs.client }},{{ outputs.getCompanyInfo }}y{{ variables.challenges }}. -
Definir Formato de Salida: En Set Output Format, use
{{ outputs.getOffer }}para definir el resultado.
Paso 9: Revisar Control de Acceso
- Acción: Configura los permisos de acceso para la herramienta.
- Elemento: Sección Control de Acceso.
- Resultado: Decide si la herramienta es pública o privada y gestiona propietarios.

Resultado
Al completar estos pasos, habrás creado y configurado con éxito una nueva herramienta personalizada en Tool Flow Creation Tutorial. Ahora podrás gestionar flujos de trabajo de manera más eficiente, asegurándote de que los procesos sean automatizados y optimizados.